专利摘要:
順列演算を実行するための順列回路を有する処理回路と、データを格納するための複数のレジスタを有するレジスタバンクと、プログラム命令に応答して処理回路を制御し、データ処理演算を実行する制御回路と、を含む処理データのための装置が提供される。制御回路は、制御生成命令に応答して、ビットマスクに基づいて制御信号を生成し、入力オペランドに対して順列演算を実行するための順列回路を構成するように構成される。ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、前記第1の順序と前記第2の順序とのうちの他方を変える。
公开号:JP2011510389A
申请号:JP2010542674
申请日:2008-11-26
公开日:2011-03-31
发明作者:ドミニク・ヒューゴ・サイムス;ムラデン・ワイルダー
申请人:アーム・リミテッド;
IPC主号:G06F17-16
专利说明:

[0001] 本発明は、データの順列演算を実行するための装置と方法とに関する。]
背景技術

[0002] 信号処理アプリケーションなどのデータ処理アプリケーションは、一般に、データの再配置が高データレートで実行される必要がある。例えば、単一命令多重データ(SIMD)エンジンの使用時など、データ処理が十分に加速されると、順列化などのデータ再配置が、計算を実行する際のボトルネックになることがある。]
[0003] 無線標準規格で使用される信号処理アプリケーションなどでは、デインターリーブ演算とインターリーブ演算とが、極めて一般的な順列化の形態である。これらの演算は、デインターリーブの場合には2つ以上のチャネルを分離する目的で、インターリーブの場合には2本以上のチャネルを結合する目的で実行される。パイロットチャネル(すなわち制御チャネル)からのデータチャネルの分離はその一例である。誤り訂正は、ノイズのある通信チャネルを介したデータ伝送を理由に発生し得る誤りを訂正するために、信号処理で広く使用されている。誤り訂正処理時には、データのパンクチャリングとデパンクチャリングが実行されることが多い。パンクチャリングは、データレートと誤り耐性との間のトレードオフを変える目的で使用される。パンクチャリング動作がデータチャネルをデインターリーブして第2のチャネルを破棄することを伴うのに対し、デパンクチャリングは、ゼロを有する1つの通信チャネルをインターリーブすることを伴う。]
[0004] 複数のバタフライ順列ネットワークを並行使用してデインターリーブ演算を実行することは公知である。例えば、Y. Hilewitz、Z. Shee、およびR Leeによる「Comparing Fast Implementations of Bit Permutation Instructions」(Proceedings of 38th Annual Asilomar Conference on Signals, Systems and Computers, November 2004)に、デインターリーブ演算を実行するGRP命令を2つのバタフライネットワークで並行して実装する方法が記載されている。この出版物では、バタフライネットワークまたは逆バタフライネットワークでGRPを実行することはできないが、2つの逆バタフライネットワークを使用して、RビットとLビットとを並行してグループ化してもよいと述べられている。一方のバタフライネットワークが第1のチャネルをデインターリーブし、他方のバタフライネットワークが第2のチャネルをデインターリーブする。ただし、この技術を使用してインターリーブ演算を実行することはできず、デインターリーブ演算のみ実行することができる。クロスバー配列を使用して汎用的な順列化命令を実行することも公知である。しかし、このようなクロスバーネットワークは、n入力のクロスバーのためにn2回の計算命令を伴う。そのため、このようなクロスバーネットワークは、領域効率があまり良くない。]
発明が解決しようとする課題

[0005] そのため、データ順列演算をより効率的に加速する必要がある。また、バタフライ順列ネットワークを使用してインターリーブ演算を実行することも可能である必要がある。]
課題を解決するための手段

[0006] 第1の態様によれば、本発明はデータ処理のための装置を提供し、前記装置は、順列演算を実行するための順列回路を含む、データ処理演算を実行するための処理回路と、データを格納するための複数のレジスタを有するレジスタバンクと、前記処理回路を制御して前記データ処理演算を実行するプログラム命令に応答する制御回路と、を含み、前記制御回路は、ビットマスクに基づいて、前記レジスタバンクの1つ以上のレジスタに格納されるデータを含む入力オペランドで順列演算を実行するための前記順列回路を構成する制御信号を生成する制御生成命令に応答するように構成され、前記ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、前記順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、他方を変える。]
[0007] 本発明は、第1の順序を有する第1のグループのデータ要素と、第2の順序を有する第2のグループのデータ要素とを含む入力オペランドで順列演算を実行し、第1の順序と第2の順序とのうちの一方を保存して他方を変えることにより、ビットマスクを基に制御回路を使用し、制御信号を生成して順列演算を実行するための順列回路を構成して、より効果的な順列演算を実行できることを認める。このような順列演算の実行を可能にする制御生成命令を提供することにより、順列回路の構成に大きな柔軟性が提供され、より領域効率的に順列演算を実行することが可能となる。また、データ再配置が高データレートで実行された場合にデータ再配置がボトルネックになるという課題を改善する。]
[0008] 順列演算に伴う入力オペランドの第1の順序と第2の順序とのうちの一方の順序変更は、入力順序に関連する数々の異なる順序変更のいずれか1つを含み得ることは理解されよう。ただし、一配置において、第1の順序と第2の順序とのうちの一方の順序変更は、逆順化を含む。配列された2つのデータセットの一方の逆順化により、その2つのデータセットのデータを入力順序に従って手軽に分離し、簡単に並べ替えることができる。さらに、第2のデータセットの逆順化により、順列回路が簡略化される。]
[0009] 順列演算が、単純再配列やデータの逆順化など、数々の異なる順列演算のいずれかであり得ることは理解されよう。ただし、一実施形態において、順列演算は、インターリーブ演算とデインターリーブ演算とのうちの一方である。一般にこれらの演算は、信号処理アプリケーションで実行されており、本技術に係る順列回路と制御回路とを使用した効率的な実装は、全体の処理スループットを高める可能性が高い。]
[0010] 制御生成命令の目的が、順列演算を実行するための順列回路の構成のみということもあり得るという点は理解されよう。別の命令を用意して実際に順列回路を制御し、順列演算を実行してもよい。ただし、一実施形態において、制御回路は、制御生成命令に応答して順列回路を構成し、順列演算を実行する。これにより、順列演算が便利に実装される。単一命令の使用により、一般的な演算の実行が簡略化され、プログラムコードを簡潔にすることができる。]
[0011] 入力オペランドのデータ要素がシングルビットデータ要素である可能性があることは理解されよう。ただし、一実施形態において、入力オペランドのデータ要素はマルチビットデータ要素を含む。シングルビットデータ要素ではなくマルチビットデータ要素を順列化するには、メモリアクセスを減らす必要があり、それによって効率が上がる。]
[0012] 入力オペランドまたは順列演算が、スカラや標準ベクトルなど、任意のタイプの入力オペランドを含み得ることは理解されよう。ただし、一実施形態において、入力オペランドは、例えば複数の通信チャネルからのデータを含むパックドベクトルを含む。パックドベクトルの使用により、計算が並行処理され、それによって処理が加速する。]
[0013] 順列演算に対する入力オペランドがスカラを含み得ることは理解されよう。同様に、順列演算によって生成される出力値は、スカラ値を含み得る。ただし、一実施形態において、順列演算は、2つの配列されたデータセットを含む入力ベクトルデータに対して実行され、保存された順序を有する前記第1および第2のグループのデータ要素の一方と、変更された順序を有する前記第1および第2のグループデータ要素の他方とを含む出力ベクトルを生成する。ベクトル処理により、所与の計算を実行するために必要なメモリアクセスの回数が減り、それによって計算の効率が上がる。]
[0014] 入力ベクトルはメモリから直接入力され得ることは理解されよう。ただし、一実施形態において、入力ベクトルは複数のベクトルレジスタを含み、出力ベクトルはそれぞれの複数のベクトルレジスタを含む。このような方法でのレジスタの使用により、データへのアクセス性が向上し、それによって計算のスループットが増加する。]
[0015] データ処理装置により、ビットマスクをメインメモリなど任意の場所に格納できることは理解されよう。ただし、一実施形態において、データ処理装置は、ビットマスクを格納するための少なくとも1つのマスクレジスタを含む。特殊目的のマスクレジスタは、順列演算を実装しやすくする。]
[0016] 少なくとも1つのマスクレジスタが、第1のグループのデータ要素と第2のグループのデータ要素とを区別する数々の異なる方法のいずれか1つで構成され得ることは理解されよう。ただし、一実施形態において、少なくとも1つのマスクレジスタは、0ビットを使用して第1のグループのデータ要素と第2のグループのデータ要素とのうちの一方を表し、1ビットを使用して2つのデータ要素のグループの他方を表す。代替実施形態において、少なくとも1つのマスクレジスタは、ブールレジスタである。このタイプのマスクレジスタは実装しやすく、そのため、データ処理装置の組み立てが簡略化される。]
[0017] 順列回路は、順列演算を実行できるという条件で、数々の異なる形態のいずれか1つを取り得ることは理解されよう。ただし、一実施形態において、順列回路は、データ要素ペア間のバタフライ接続に基づいて、複数のデータ要素を再配置するように構成されたバタフライネットワークを含む。順列回路をバタフライネットワークとして実装すれば、n入力計算をlog n段階で実行することが可能となるため、特に効率的である。これは、例えば、n入力計算のためにn2段階を必要とするクロスバーネットワークと比べて好ましい。バタフライネットワークは、構成しやすく、効率的に実装できる。順列回路をバタフライネットワークとして実装することにより、インターリーブ演算とデインターリーブ演算との両方を実行する目的で単一のバタフライネットワークを実装することができる。これは、バタフライネットワークを使用して、(インターリーブではなく)デインターリーブ演算しか実行できず、デインターリーブ演算を実行するために少なくとも2つの別々のネットワークが必要であった既知のシステムと比べて好ましい。単一のバタフライネットワークを使用できることにより、2つのバタフライネットワークの半分の電力で計算を実行することができる。]
[0018] バタフライネットワークは、データ要素が一定でバタフライが変化するインプレース型のバタフライネットワークであり得ることは理解されよう。ただし、一実施形態において、バタフライネットワークは、バタフライ接続が一定であり、複数のデータ要素が移動できる一定ジオメトリのネットワークである。]
[0019] 第1および第2のグループのデータ要素が各々同一数の組成データ要素を有し得ることは理解されよう。ただし、一実施形態において、第1のグループのデータ要素と第2のグループのデータ要素とは、異なる数の組成データ要素を有する。これにより、極めて柔軟に順列計算を実行できるようになり、より多様なインターリーブおよびデインターリーブ演算が実行できるようになる。]
[0020] 第1のグループのデータ要素と第2のグループのデータ要素とが単一ソースからのデータを含み得ることは理解されよう。ただし、一実施形態において、第1のグループのデータ要素と第2のグループのデータ要素とは、2つの異なる通信チャネルにそれぞれ対応する。これにより、2つの異なる通信チャネルのインターリーブとデインターリーブとが容易になり、一般的な信号処理演算を効率よく処理することができる。]
[0021] データ処理装置が数々の異なる形態のいずれか1つを取り得ることは理解されよう。例えば、データ処理装置は、中央処理装置(CPU)であってもよい。ただし、一実施形態において、データ処理装置は、デジタル信号プロセッサである。代替実施形態において、データ処理装置は、コプロセッサである。]
[0022] 第2の態様によれば、本発明は、データ処理演算を実行するための処理回路を有するデータ処理装置と、データを格納するための複数のレジスタを有するレジスタバンクと、前記処理回路を制御して前記データ処理演算を実行するプログラム命令に反応する制御回路とを使用して順列演算を実行するための方法を提供し、前記制御回路は、順列演算を実行するための順列回路を含み、前記方法は、(i)制御生成命令に対し、ビットマスクを基に制御信号を生成して、前記レジスタバンクの1つ以上のレジスタに格納されるデータを含む入力オペランドで順列演算を実行するための前記順列回路を構成する制御信号を生成するステップを含み、前記ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、前記順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、他方を変える。]
[0023] 第3の態様によれば、本発明は、データを処理するための装置のエミュレーションを提供する仮想マシンを提供し、前記装置は、順列演算を実行するための順列回路を含む、データ処理演算を実行するための処理回路と、データを格納するための複数のレジスタを有するレジスタバンクと、前記処理回路を制御して前記データ処理演算を実行するプログラム命令に応答する制御回路と、を含み、前記制御回路は、ビットマスクに基づいて、前記レジスタバンクの1つ以上のレジスタに格納されるデータを含む入力オペランドで順列演算を実行するための前記順列回路を構成する制御信号を生成する制御生成命令に応答するように構成され、前記ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、前記順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、他方を変える。]
[0024] 本発明の他の様々な態様および特徴が、添付の請求の範囲においてそれぞれ定められる。従属請求項の特徴の組み合せは、独立請求項の特徴と適宜組み合わせることができ、請求項に明記されているだけにとどまらない。]
[0025] 以降、本発明の実施形態を、添付の図面を参照しながら一例として記載する。]
図面の簡単な説明

[0026] 本発明の一実施形態に係るデータ処理装置を示す模式図である。
本技術に係るベクトルデインターリーブ命令を示す模式図である。
本技術に係るベクトルインターリーブ命令を示す模式図である。
図2Aおよび2Bのベクトルインターリーブ命令VITLとベクトルデインターリーブ命令VDTLとを実装する際に図1のバタフライ順列ネットワークによって実行される一連の順列化を示す模式図である。
既知のシステムでデインターリーブ演算を実装するのに2つの別々のバタフライネットワークが必要であった理由を示す模式図である。
8要素のビットマスクの実施例において制御ジェネレータ116の制御回路の具体的な実施形態を示す模式図である。
制御値iが0に等しく、入力マスクmが[11001110]に等しいケースを表す図である。
入力マスクの値を示す図であり、上記計算では、制御段階iの出力制御ビットは1に等しい。
iが論理ゲートの各々に対応する入力および出力を有する2段階計算に等しいことを示す図である。
16ビットマスクを例に制御生成回路を示す模式図である。
本発明の一実施形態に係る制御生成命令VDTLCをCプログラミング言語で記したプログラムコードを示す図である。
例示的なデインターリーブ命令のプログラムコードを示す図である。
インターリーブ再配置命令と関連付けられているプログラムコードを示す図である。
所与のデインターリーブ演算用の一定ジオメトリのバタフライ回路を示す模式図である。
所与のデインターリーブ演算用のインプレース型のバタフライ回路を示す模式図である。
図1のデータエンジン100の仮想マシンの実装を示す模式図である。] 図1 図2A
[0027] 図1は、本発明の一実施形態に係るデータ処理装置を示す模式図である。装置は、バタフライ順列ネットワーク110と、SIMDレジスタ112と、マスクレジスタバンク114と、制御ジェネレータ116と、を有するデータエンジン100を含む。データ処理装置は、データメモリ120と、コントローラ130と、命令メモリ140とを、データエンジンに対して外部的にさらに含む。] 図1
[0028] バタフライ順列ネットワーク110は、SIMDレジスタ112から読み込まれた複数のマルチビットデータ要素を有するパックドベクトルを含む入力値サンプルに対して順列演算を実行する。SIMDレジスタの幅は、各々32×16ビット要素である。順列演算のための入力ベクトルは、レジスタペア、すなわち64×16ビット要素を1度に使用して実行される。順列化の結果は、SIMDレジスタバンク112へと書き戻される。データエンジン100の処理回路は、命令メモリ140から読み込まれたプログラム命令の実行に応じてデータ処理演算を実行する。コントローラ130はそれらの命令を、データエンジン100の処理回路を制御してデータ処理演算を実行する制御信号に変換する。ただし、バタフライ順列ネットワーク110は、データエンジン100内で制御ジェネレータ回路116によって生成される制御信号によってさらに制御される。]
[0029] 特に制御ジェネレータ116は、32ビットマスクレジスタバンク114から読み込まれる入力ビットマスクに基づいて、バタフライ順列ネットワーク110を構成するための制御信号を生成する。制御ジェネレータ回路116は、生成された制御信号を出力し、それらをマスクレジスタバンク114に格納する。制御信号は、マスクレジスタバンク114から読み込まれ、関連する順列演算を実行するために、適時にバタフライネットワークに供給される。]
[0030] 順列演算の結果ベクトルは、64×16ビットデータ要素を含む「パックド(packed)」ベクトルである。マスクレジスタバンク114によって制御ジェネレータ回路116に適用されるビットマスクは、第1の順序を有する第1のグループのデータ要素と、第2の順序を有する第2のグループのデータ要素とを入力ベクトル内で特定する役割を果たす。例えば、第1のグループのデータ要素は第1の通信チャネルのデータに対応し得るのに対し、第2のグループのデータ要素が2つ目の通信チャネルに対応する。順列演算は32×16ビットのレジスタペアを使用して実行されるため、制御ジェネレータ116は、32ビットマスクレジスタを読み込んで、順列化される64要素内で2つのデータセットを特定するのに必要な64マスクビットを取得する。制御ジェネレータ116によって生成される制御信号は、入力ベクトルに対して実行される順列演算が第1の順序と第2の順序とのうちの一方を保存して他方を変えるようにバタフライネットワークを構成する。SIMDレジスタとマスクレジスタのデータ値は、外部データメモリ120から読み込まれてもよい。制御ジェネレータ回路116によって出力される特定の制御信号は、複数のマスクベクトルのうちどれが制御ジェネレータ回路116に入力値として供給されるかによって変わってくる。順列ネットワーク110は、合計32個の16ビットデータ要素を含むパックドベクトルに対して動作する。]
[0031] 図2Aおよび2Bは、本技術に係るベクトルデインターリーブ命令とベクトルインターリーブ命令とを示す模式図である。] 図2A
[0032] 図2Aは、複数のデータ要素を含む入力ベクトルVnを、ビットマスクVmに従って、チャネル0のサンプルと逆転されたチャネル1のサンプルとを含む出力ベクトルVdに再配置するベクトルデインターリーブ命令を示す模式図である。チャネル0のサンプルはx0、x1、x2で表され、チャネル1のサンプルはy0、y1、y2、y3、およびy4で表される。この実施例において、ベクトルは8つのデータ要素を含み、各々がマルチビットデータ要素である。ただし、ビットマスクVmは、ベクトルの8つのデータ要素に対応する合計8つのビットを含む。このベクトルデインターリーブ命令VDTLは、図1のSIMDレジスタバンク112から読み込まれる8データ要素の入力ベクトル220に対して動作し、図1のバタフライ順列ネットワーク110は、順列化によってチャネル0のサンプルがチャネル1のサンプルから分離されるように、ビットマスク210に基づいて構成される。したがって、出力ベクトル230は、チャネル0のサンプルx0、x1、およびx2が順に出力され、チャネル1のサンプルy4、y3、y2、y1、およびy0が逆の順序で出力されるパックドベクトルである。ビットマスク210は、チャネル0のサンプルに対応するビット値0を有し、チャネル1のサンプルに対応するビット値1を有することがわかる。したがって、ビットマスク210により、バタフライ順列回路110が、2つのチャネルの分離を実行するためにチャネル0のサンプルとチャネル1のサンプルとを区別することが可能になる。] 図1 図2A
[0033] 図2Bは、本発明の一実施形態に係るベクトルインターリーブ命令VITLを示す模式図である。このベクトルインターリーブ命令は、チャネル0とチャネル1とのサンプルを含む8データ要素(eight data-element)の入力ベクトル222に対して動作する。このケースでは、チャネル0のサンプルが、入力ベクトルVnにて連続的に配置されており、チャネル1のサンプルも同様である。ビットマスク212は、インターリーブ演算がどのように実行されるべきかを示す。特に、チャネル0のサンプルの然るべき配置場所に対応する出力ベクトルVd内の位置が、対応するビットマスクの位置に0を有するのに対し、チャネル1のサンプルが配置されるべき出力ベクトル内の位置は、対応するビットマスクの位置に1を有する。そのため、出力ベクトル232は、チャネル0のデータ要素x0、xl、およびx2が、チャネル1のデータ要素y0、y1、y2、y3、およびy4によってインターリーブされる。図2Bの出力ベクトル232のこのケースでは、左から右にベクトルを読み込むと、チャネル1のサンプルと同様、チャネル0のサンプルも昇順で配置される。これは、ベクトルデインターリーブ演算の出力ベクトル230とは対照的である。こちらは、出力ベクトル230で左から右に読み込むと、チャネル0のサンプルが昇順で配置されるのに対し、チャネル1のサンプルは降順に配置される。それでも、図2Aと図2Bとの両方で、チャネル0のデータ要素の配列は、入力ベクトルVnと出力ベクトルVdとの間で維持されるのに対し、チャネル1のサンプルの配列は、入力ベクトルVnと出力ベクトルVdとの間で逆になる。チャネル1のサンプルの順序は入力順序に対して出力時に逆になるものの、2つのチャネルの分離後に、チャネル1のサンプルの順序を逆にしてベクトル(またはレジスタ)全体の入力順序を一度に取得するのは比較的容易である。この例示的な実施形態において、ビットマスクレジスタは、ブール値(Boolean value)(すなわち述語(predicate))のレジスタである。ただし、代替実施形態では、ビットマスクレジスタが通常のレジスタである可能性がある。図1の配置において、マスクレジスタバンク114は、レーンごとにシングルビットを含むレジスタを有する特別な述語レジスタバンクである。] 図1 図2A 図2B
[0034] 図3は、図2Aおよび2Bのベクトルインターリーブ命令(VITL)とベクトルデインターリーブ命令(VDTL)を実行する際に、図1のバタフライ順列ネットワーク110によって実行される一連の順列化を示す模式図である。バタフライネットワークは、データ順列化の実行時に使用するのに適した魅力的な性質を有する。このケースでは、バタフライネットワークが8つの入力データ要素を有し、順列化を、第1の段階310と、第2の段階320と、第3かつ最終の段階330という3つの個別段階に分割することができる。一般に、n入力バタフライネットワークにおける段階の合計数はlog nであり、交点の合計数はn log nである。これは、n入力クロスバーネットワークの場合に生まれるn2か所の交点より大幅に少ない。したがって、バタフライネットワークの回路実装は、標準的なクロスバーより領域効率に優れている。図3の実施例には、合計24か所の交点がある。バタフライネットワークの各段階で、入力値ごとに、2つの同じ出力を共有する別の入力値がある。本願明細書では、これらの入力値ペアを共有入力値と称し、対応する出力値ペアを共有出力値と称する。バタフライネットワークにおけるこれらの共用ペアは、シングルビットを使用して構成される。例えば、バタフライネットワークの第1段階において、データ要素の入力値ペアx0、y0は、その直下に、第1段階で破線の交点によって示される共有出力値を有する共有入力値である。このケースでは、データ入力要素x0とy0とが、第1段階の終わりの時点では既存の位置にとどまっている(すなわち、破線の交点経路ではなく、垂直経路をたどる)。ただし、バタフライネットワークの構成が異なっていれば、これら2つのデータ要素が場所をスワップしていた可能性がある。] 図1 図2A 図3
[0035] バタフライネットワークの第2段階320において、入力データ要素y0は、第2段階の出力時に入力データ要素y0と位置をスワップし、データ要素x2とy3も位置をスワップする。このケースでは、第1段階310が入力と出力との間で1か所水平にシフトする可能性を伴い、第2段階が2か所の水平スワップを伴い、第3段階が4か所の水平スワップを伴うことに注意されたい。いずれのケースでも、入力データ要素は、出力時に、該当する入力段階のときと同じ位置に留まっていてもよい。入力段階310から、8データ要素の入力ベクトル[x0,y0,y1,y2,x1,x2,y3,y4]は図2Aの入力ベクトル220に対応し、デインターリーブ命令を実装する際に伴う3段階の順列化は、第3段階330の出力が図2Aの出力ベクトル230に対応するように図3のバタフライ順列ネットワークで最上部から最下部までたどることによって追跡可能であることがわかる。逆に、図3のバタフライネットワークの最下部から始め、段階330から段階320を経由して最終的に段階310に戻ることは、図2Bのベクトルインターリーブ命令VITLを実装することに対応する。] 図2A 図2B 図3
[0036] 図2Aおよび図2Bのベクトルインターリーブ命令に対応する制御ビットは、図3のバタフライダイアグラムに由来する可能性がある。各段階のすべてのデータスワップが実線で示されており、スワップが発生しないところでは、破線が引かれているという点に注意されたい。したがって、制御ビットを右から左に読むと、段階310の制御ビットは[0,1,0,0]、段階320の制御ビットは[0,1,1,0]となり、段階330の制御ビットは[1,1,1,0]となる。ベクトルインターリーブ命令とベクトルデインターリーブ命令との両方が、単一のバタフライ順列ネットワークを使用して実行されたことに注意されたい。既知のシステムでは、バタフライネットワークを使用してインターリーブ演算を実行することが全く知られておらず、さらに、バタフライネットワークを使用してデインターリーブ演算を実行するには、図4に示すとおり、少なくとも2つの異なるバタフライネットワークを連続して、または横並びにして使用して実装するしかない。] 図2A 図2B 図3 図4
[0037] 図4は、既知のシステムでデインターリーブ演算を実装するのに2つの別々のバタフライネットワークが必要である理由を示す模式図である。図4は、チャネル0のサンプル用の第1のバタフライネットワーク400と、チャネル1のサンプル用の第2のバタフライネットワーク450を示す図である。図2Aに示す本発明の実施形態との整合を保つために、インターリーブされた同じ8要素の入力ベクトルが使用されている。ただし、チャネル0のサンプルだけは第1のバタフライネットワーク400にあり、チャネル1のサンプルは第2のバタフライネットワーク450に示されている。既知のシステムでは、チャネル0のサンプルとチャネル1のサンプルの出力は、両方のチャネルサンプルデータの順序が出力時に保存されるようになっていた。特に、入力順序はそれぞれx0、x1、x2およびy0、y1、y2、y3、y4であり、出力順序は同一である。所与のチャネルに対応するデータ要素は、入力時でなく出力時に連続的に配置される。] 図2A 図4
[0038] 図3において、バタフライダイアグラムの破線はスワップを表し、実線は実行中のスワップを表していたことに注意されたい。しかし、図4、図10A、および01Bのダイアグラムでは、すべての線が実線である。これらのダイアグラムにおいて、それぞれの実線の交点は、(交点に従って)要素がスワップされる可能性があるか、入力制御ビットに応じて同じ位置にとどまる可能性があることを意味する。] 図10A 図3 図4
[0039] 図4のバタフライダイアグラムは、それぞれのケースで出力ベクトルを生成するのに必要な3つの再配置段階を示す。単一のバタフライ順列ネットワークを使用してこのデインターリーブ演算を実行することはできないという事実は、各々のバタフライネットワークの段階2の出力から明らかである。そこでは、データ要素の必須出力位置に2つの衝突410、420が存在することが示されている。特に衝突410は、第1のバタフライネットワークに最も左の位置を有する要素x0を伴う。この要素は、第2のバタフライネットワーク450のデータ要素y1によっても必要とされる。同様に、バタフライネットワーク400の右からの2つ目のデータ要素、すなわちデータ要素X2が、第2段階の出力でチャネル1のデータ要素Y3と衝突する。Y3が出力ベクトルの所望の最終順序を実現するには、x2と同じ出力位置に存在する必要がある。図3と図4とを比較することにより、本技術に従って順列化を実行することにより、結果的に効率が改善されることがわかる。チャネル1のデータが出力時に逆の順序になることを許可することにより、単一のバタフライネットワークを使用して計算を実行することができる。さらに、デインターリーブ演算だけでなく、インターリーブも快適かつ効率的に実行することができる。] 図3 図4
[0040] 図5Aは、8要素ビットマスクの場合の図1の制御ジェネレータ116の制御回路の具体的な実施形態を示す模式図である。制御回路500の出力値は、制御ビットCi[0]、Ci[l]、Ci[2]、およびCi[3]を表す。これらの4つの制御ビットは、図3のバタフライ順列ネットワークの段階「i」の構成ビットに対応する。制御ビットは、8ビットマスクに基づいて生成される。回路は、4つの排他的OR(XOR)ゲート502、504、506、508を1セット含む。マスクビットm[0]とm[1]とが第1のXORゲート502に入力され、マスクビットm[2]とm[3]とがXORゲート504に入力され、マスクビットm[4]とm[5]とがXORゲート506に入力され、マスクビットm[6]とm[7]とがXORゲート508に入力される。] 図1 図3 図5A
[0041] XORゲート502の出力値は、制御値iが1未満であるか1に等しいかによって異なる入力値と共にANDゲート510に供給される。ANDゲート510の出力値は、第2のXORゲート522と第3のXORゲート532とに供給される。XORゲート532の出力値は、制御ビットCi[1]を表す。制御ビットCi[0]は、マスクビットm[0]に直接対応する。XORゲート522の第2の入力値は、XORゲート504の出力値に対応する。XORゲート522の出力値は、制御ビットiが0未満か0に等しいかによって異なる入力値と共に、ANDゲート526に供給される。ANDゲート526の出力値は、マスクビットm[4]と共にXORゲート534への入力値として供給される。XORゲート534の出力値は、制御ビットCi[2]に対応する。]
[0042] ANDゲート526の出力値は、XORゲート529へのさらなる入力値としても供給され、XORゲート529の出力値は使用されない。ANDゲート526の出力値は、XORゲート528にさらに供給され、XORゲート528の出力値は、マスクビットm[6]と共にさらなるXORゲート536に供給される。このXORゲート536の出力値は、制御ビットCi[3]に対応する。XORゲート506の出力値は、制御ビットiが1未満か1に等しいかによって異なる入力値と共にANDゲート512に供給される。このANDゲート512の出力値は、XORゲート528への入力とXORゲート524への入力値との両方として適用される。]
[0043] したがって、制御回路500は、複数のXORゲートと複数のANDゲートとを含むことにより、出力制御ビットがマスクビットと制御値iとの両方に依存するようになっている。図5Aの回路の各段階における値の具体的な実施例を、図5B、5C、および5Dの実施例に示す。] 図5A 図5B
[0044] 実施例 n=2で、初期入力マスクm=[1 1 0 0 1 1 1 0]である入力2n+1ビットマスク
i=0 C0[ ]=[0 1 0 0]
次の段階の入力マスクm[ ] = [1 0 1 1 1 0 1 0]
i=1 C1[ ]=[0 1 1 0]
次の段階の入力マスク m[ ] = [1 1 0 1 0 1 1 0]
i=2 C2[ ]=[1 1 1 0]
次の段階の入力マスク m[ ]=[1 0 0 1 1 1 1 0]]
[0045] 図5Bは、制御ビットi=0で、入力ビットマスクm=[11001110]であるケースを表す。図5Bのダイアグラムに、論理ゲートの各々の論理出力が示されている。このケースでは、i=0であり、i≦1を満たしているため、ANDゲート510、512、および526への制御依存入力値はすべて、0ではなく1の値を取る。上記入力マスクによって生成される制御ビット出力値は、4ビット制御値C0[ ]=[0,1,0,0]に対応することがわかる。] 図5B
[0046] 図5Cは、上記計算における入力マスクの値と、i=1の場合の出力制御ビットを示す。このケースでは、入力マスクがm=[10111010]に対応する。すなわち、段階i≧0以上でない場合の入力ビットマスクである。段階i=1で生成される制御ビットは、図示のとおりC1[ ]=[0,1,1,0]である。このケースでは、i=1(したがって条件i≦1が満たされている)であるため、ANDゲート510と512とへの制御依存入力値は0ではなく1であるが、ANDゲート526への制御依存入力値は0である。] 図5C
[0047] 図5Dは、i=2の段階の計算と、論理ゲートの各々に対応する入力値と出力値とを示す。このケースでは、入力ビットマスクm[ ]=[11010110]であり、これはi≧1でない場合のビットマスクである。この段階=2で生成される出力値は、制御ビットC2[ ]=[1,1,1,0]である。このケースでは、i=2であるため、ANDゲート510、512、および526の各々への制御依存入力値は0である(条件i≦1が満たされないため)。] 図5D
[0048] 図6は、n=3、すなわち16データ要素の入力ベクトルおよびマスクの場合の制御ジェネレータ116の制御回路の代替実装を示す模式図である。図5Aの回路に関しては、回路がXORゲートとANDゲートとの配列を含む。出力制御値は、マスクビットと制御値(すなわちiの値)との両方に依存する。図1の制御ジェネレータ回路116は、以下のアルゴリズムを実装して、以降の計算段階で使用される出力マスクベクトルを計算する。] 図1 図5A 図6
[0049] 制御生成(CONTROL GENERATION)
入力 2n+1ビットマスク(m[2n+1−1]....m(0))
出力 各々2nビットの(n+1)制御マスク(Ci[2n−1]....Ci[O])
アルゴリズム
for i=0,1,2,....n


Ci[2n−1]....Ci[0]は、制御段階回路によって生成される制御マスクである。
(Ci[K]なら、各々のK=2n−1,...0につきm[2K+1]とm[2K]とをスワップ
(m[2n+1−1]....m[0]←(m[2n+1−1] m[2n+1−3]...m[1]
m[2n+1−2] m[2n+1−4]...m[0])
と並べ替え

注:これは、mを再利用するか、中心ステップ回路をn回チェーン化することによって連続的に実装することができる。
7 6 5 4 3 2 1 0
例 n=2 i=0,1,2 m=[1 1 0 0 1 1 1 0]と仮定すると、
3 2 1 0
i=0につきC0[ ]=[0 1 0 0]であることから、
C0[2]のみ#0となる。
∴ m[5]とm[4]とをスワップ → 変化なし
[m7 m6 m5 m4 m3 m2 m1 m0]を並べ替え
→ [m7 m5 m3 m1 m6 m4 m2 m0]
[1 0 1 1 1 0 1 0]=段階i=0の場合のm出力の値]
[0050] 図6の回路は、2の乗数である任意のマスクサイズに容易に拡張できることに注意されたい。] 図6
[0051] 図7は、本発明の一実施形態に係る、Cプログラミング言語による制御生成命令VDTLCのプログラムコードを示す。制御生成命令VDTLCは、入力値として32ビットブール値VBOOL16_T X0、64ビットビットマスクとしてVBOOL16_T X1を取り、図1のバタフライ順列ネットワーク110を構成するための制御ビットを含む出力値を生成する。このプログラムコードは、特定マスクビットのスワップとマスクの並べ替えによる次の計算段階用の入力マスクの生成を伴う上記の制御生成アルゴリズムを実装する。] 図1 図7
[0052] 図8は、デインターリーブ再配置命令と具体的に関連付けられているプログラムコードを示す。] 図8
[0053] 図9は、インターリーブ再配置命令と関連付けられているプログラムコードである。] 図9
[0054] 図2Aおよび図2Bに示される再配置演算の各々を実装するために、単一の原子的な(atomic)プログラム命令が使用できる可能性もある。あるいは、2つ以上のプログラム命令の組み合せを使用して、所与の入力ベクトルを基に必要な出力ベクトルを生成できる可能性もある。特に、記載されている実施形態においては、別々の制御生成命令を使用して制御信号が生成され、以降の再配置命令を使用してインターリーブまたはデインターリーブ再配置が実行される。制御生成とインターリーブまたはデインターリーブ演算とを代替実施形態の単一プログラム命令の中で組み合わせられる可能性があることは理解されよう。] 図2A 図2B
[0055] 図3に模式的に示すバタフライネットワークは、一実施例装置であるにすぎない。上記の制御信号生成は、一定ジオメトリのバタフライで使用する制御信号を生成する。一定ジオメトリのバタフライ順列ネットワークでは、同じ要素ペアが常にスワップされるが、要素自体は移動して異なる出力値を生成する。代替実施形態では、高速フーリエ変換(FFT)スタイルのバタフライ順列化作業が使用される。ここでは、データ要素は一定であるものの、再配置を実行するためにバタフライ接続自体は変化する。] 図3
[0056] 図10Aは、所与のデインターリーブ演算用の一定ジオメトリのバタフライ回路を示す模式図であり、図10Bは、同じデインターリーブ演算用のインプレース型バタフライ回路を示す模式図である。各段階の制御信号が図10Aと図10Bとで同じだが、各段階で実行されるスワップは2つのダイアグラムで異なることがわかる。図10Aと図10Bとの回路は同じである。すなわち、同じ接続を有するが、物理的な二次元レイアウトは異なる。ただし、図10Aの配置については、第1の層のゲートだけを使用し、3サイクルで3回それらを再利用するというオプションがある。一般に、制御信号はこの2つの回路で順序が異なるが、示されている実施例の制御値セットについては該当しない。] 図10A 図10B
[0057] 上記の技術は、上述の命令を含む一連のネイティブ命令を実行するハードウェアによって実行されてもよい一方、代替実施形態では、このような命令が、仮想マシンにとってネイティブであるような仮想マシン環境で実行してもよいことは理解されよう。ただし仮想マシンは、異なるネイティブ命令セットを有するハードウェア上で実行しているソフトウェアによって実装される。バーチャルマシン環境は、完全な命令セットの実行をエミュレートする完全なバーチャルマシン環境を提供しても良く、または、本技術の命令を含む一部の命令だけがハードウェアによってトラップされ、部分的な仮想マシンによってエミュレートされる部分的な環境を提供しても良い。]
[0058] より詳細には、上記の制御生成命令を、完全または部分的仮想マシンに対するネイティブ命令として実行し、仮想マシンとその基底ハードウェアプラットフォームを併用して、上記の処理回路と制御回路とを提供してもよい。]
実施例

[0059] 図11は、図1のデータエンジン100の仮想マシンの実装を示す模式図である。この構成は、データエンジン100の演算をエミュレートするように構成された仮想マシン1100を含む。仮想マシン1100(ARMプロセッサまたはデータエンジンのエミュレートなど)は、自らが実行をエミュレートする本技術にかかる制御生成命令を含むマシンコード(ARMマシンコードなど)を受け取るように構成される。仮想マシンの演算に使用する汎用プロセッサが十分に高性能であれば、現実的な全体の処理スループットを実現することができ、本技術に係る制御生成命令を含む既存のコードベースを実行できるという効果により、汎用プロセッサのこのような使用が正当化されるであろう。] 図1 図11
[0060] 100データエンジン
110バタフライ順列ネットワーク(順列回路)
112SIMDレジスタ
114マスクレジスタバンク(マスクレジスタ)
116 制御ジェネレータ
120データメモリ
130コントローラ
140 命令メモリ]
权利要求:

請求項1
データを処理するための装置であり、順列演算を実行するための順列回路を含む、データ処理演算を実行するための処理回路と、データを格納するための複数のレジスタを有するレジスタバンクと、前記処理回路を制御して前記データ処理演算を実行するプログラム命令に応答する制御回路と、を含み、前記制御回路は、ビットマスクに基づいて、前記レジスタバンクの1つ以上のレジスタに格納されるデータを含む入力オペランドで順列演算を実行するための前記順列回路を構成する制御信号を生成する制御生成命令に応答するように構成され、前記ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、前記順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、他方を変える、データを処理するための装置。
請求項2
前記第1の順序と第2の順序のうち一方の前記変更された順序が逆の順序を含む、請求項1に記載の装置。
請求項3
前記順列演算は、インターリーブ演算およびデインターリーブ演算のうちの1つである、請求項1に記載の装置。
請求項4
前記順列演算は、前記制御生成命令による前記順列回路の構成に従って順列化命令によって実行される、請求項1または請求項2に記載の装置。
請求項5
前記制御回路は、前記制御生成命令に応答して、前記順列回路の構成と前記順列演算の実行との両方を行う、請求項1〜4のうちのいずれか1項に記載の装置。
請求項6
前記データ要素はマルチビットデータ要素を含む、請求項1に記載の装置。
請求項7
前記入力オペランドはパックドベクトルを含む、請求項1〜6のうちのいずれか1項に記載の装置。
請求項8
前記順列演算は、データ要素の前記第1および第2のグループを含むデータの入力ベクトルに対して実行され、保存された順序を有するデータ要素の前記第1および第2のグループのうち一方と、変更された順序を有するデータ要素の前記第1および第2のグループのうち他方と、を含むデータの出力ベクトルを生成する、請求項1〜7のうちのいずれか1項に記載の装置。
請求項9
前記入力ベクトルは複数のベクトルレジスタを含み、前記出力ベクトルはそれぞれの複数のベクトルレジスタを含む、請求項8に記載の装置。
請求項10
前記ビットマスクを格納するための少なくとも1つのマスクレジスタを含む、請求項1〜9のうちのいずれか1項に記載の装置。
請求項11
前記少なくとも1つのマスクレジスタは、0ビットを使用して、前記第1のグループのデータ要素と前記第2のグループのデータ要素とのうちの一方を、1ビットを使用して、前記第1のグループのデータ要素と前記第2のグループのデータ要素とのうちの他方をそれぞれ表す、請求項10に記載の装置。
請求項12
前記少なくとも1つのマスクレジスタはブールレジスタである、請求項10記載の装置。
請求項13
前記順列回路は、前記データ要素のペア間のバタフライ接続に基づいて複数のデータ要素を再配置するように構成されたバタフライネットワークを含む、請求項1〜12のうちのいずれか1項に記載の装置。
請求項14
前記バタフライネットワークは、前記バタフライ接続が一定であり、前記複数のデータ要素が移動を許可されている一定ジオメトリのネットワークである、請求項13記載の装置。
請求項15
前記バタフライ接続が一定であり、前記複数のデータ要素が移動を許可されている、請求項13に記載の装置。
請求項16
前記第1のグループのデータ要素と前記第2のグループのデータ要素とが各々の異なる数の構成データ要素を有する、請求項1〜15のうちのいずれか1項に記載の装置。
請求項17
前記2つの配列されたデータセットが2つの異なる通信チャネルにそれぞれ対応する、請求項1〜16のうちのいずれか1項に記載の装置。
請求項18
前記データ処理装置はデジタル信号プロセッサである、請求項1〜17のうちのいずれか1項に記載の装置。
請求項19
前記データ処理装置はコプロセッサである、請求項1〜18のうちのいずれか1項に記載の装置。
請求項20
データ処理演算を実行するための処理回路を有するデータ処理装置と、データを格納するための複数のレジスタを有するレジスタバンクと、前記処理回路を制御して前記データ処理演算を実行するプログラム命令に応答する制御回路と、を使用して順列演算を実行するための方法であって、前記処理回路は、順列演算を実行するための順列回路を含み、(i)制御生成命令に対し、ビットマスクを基に制御信号を生成して、前記レジスタバンクの1つ以上のレジスタに格納されるデータを含む入力オペランドで順列演算を実行するための前記順列回路を構成する制御信号を生成するステップを含み、前記ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、前記順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、他方を変える方法。
請求項21
コンピュータを制御して請求項20に記載の方法を実行するためのコンピュータプログラムを含むコンピュータプログラム製品であって、前記コンピュータプログラムが少なくとも1つの制御生成命令を含む、コンピュータプログラム製品。
請求項22
データを処理するための装置のエミュレーションを提供する仮想マシンであって、前記装置は、順列演算を実行するための順列回路を含む、データ処理演算を実行するための処理回路と、データを格納するための複数のレジスタを有するレジスタバンクと、前記処理回路を制御して前記データ処理演算を実行するプログラム命令に応答する制御回路と、を含み、前記制御回路は、ビットマスクに基づいて、前記レジスタバンクの1つ以上のレジスタに格納されるデータを含む入力オペランドで順列演算を実行するための前記順列回路を構成する制御信号を生成する制御生成命令に応答するように構成され、前記ビットマスクは、第1の順序を有する第1のグループのデータ要素と第2の順序を有する第2のグループのデータ要素とを前記入力オペランド内で特定し、前記順列演算は、前記第1の順序と前記第2の順序とのうちの一方を保存するが、他方を変える、仮想マシン。
类似技术:
公开号 | 公开日 | 专利标题
US10795680B2|2020-10-06|Vector friendly instruction format and execution thereof
US9921840B2|2018-03-20|Sytems, apparatuses, and methods for performing a conversion of a writemask register to a list of index values in a vector register
US20190018815A1|2019-01-17|Processors, methods, and systems with a configurable spatial accelerator
US9632792B2|2017-04-25|Coalescing adjacent gather/scatter operations
US9529590B2|2016-12-27|Processor for large graph algorithm computations and matrix operations
US10416998B2|2019-09-17|Instruction for determining histograms
US9021501B2|2015-04-28|Combinatorial computing
US20190108030A1|2019-04-11|Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
JP6594762B2|2019-10-23|DRAM-based reconfigurable logic device and method
US8880850B2|2014-11-04|Low power, high performance, heterogeneous, scalable processor architecture
Johnsson1987|Solving tridiagonal systems on ensemble architectures
CN102770855B|2015-06-17|数据处理设备、数据处理系统、包、记录介质、存储装置和数据处理方法
US4141005A|1979-02-20|Data format converting apparatus for use in a digital data processor
JP5047944B2|2012-10-10|データアクセス及び置換ユニット
US7197686B2|2007-03-27|Reconfigurable bit-manipulation node
US5765216A|1998-06-09|Data processor with an efficient bit move capability and method therefor
US7577799B1|2009-08-18|Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
US7685408B2|2010-03-23|Methods and apparatus for extracting bits of a source register based on a mask and right justifying the bits into a target register
US8595280B2|2013-11-26|Apparatus and method for performing multiply-accumulate operations
US5652904A|1997-07-29|Non-reconfigurable microprocessor-emulated FPGA
US9639354B2|2017-05-02|Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
US5148547A|1992-09-15|Method and apparatus for interfacing bit-serial parallel processors to a coprocessor
US6531888B2|2003-03-11|Programmable logic datapath that may be used in a field programmable device
US8521997B2|2013-08-27|Conditional execution with multiple destination stores
US9557994B2|2017-01-31|Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number
同族专利:
公开号 | 公开日
IL206176D0|2010-12-30|
WO2009092987A1|2009-07-30|
GB2456775A|2009-07-29|
US20090187746A1|2009-07-23|
GB0801137D0|2008-02-27|
US8423752B2|2013-04-16|
GB2456775B|2012-10-31|
CN101925877A|2010-12-22|
MY150315A|2013-12-31|
TW200935304A|2009-08-16|
KR20100120154A|2010-11-12|
AT519154T|2011-08-15|
JP5279843B2|2013-09-04|
EP2235622A1|2010-10-06|
EP2235622B1|2011-08-03|
CN101925877B|2014-04-23|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-11-15| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121115 |
2012-11-28| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121127 |
2013-02-16| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130215 |
2013-04-15| TRDD| Decision of grant or rejection written|
2013-04-24| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130423 |
2013-05-30| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130521 |
2013-05-31| R150| Certificate of patent or registration of utility model|Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5279843 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2015-01-06| S111| Request for change of ownership or part of ownership|Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
2015-01-15| R350| Written notification of registration of transfer|Free format text: JAPANESE INTERMEDIATE CODE: R350 |
2016-05-31| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2017-05-30| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-01-17| S533| Written request for registration of change of name|Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
2018-01-25| R350| Written notification of registration of transfer|Free format text: JAPANESE INTERMEDIATE CODE: R350 |
2018-06-19| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-05-28| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-05-21| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-05-28| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]